package com.mcxx.modules.miniSalvation.fundpay.dao.read;

import com.mcxx.modules.miniSalvation.family.entity.BankEntity;
import com.mcxx.modules.miniSalvation.fundpay.dto.*;
import com.mcxx.modules.miniSalvation.fundpay.entity.FundPayEntity;
import com.mcxx.modules.miniSalvation.fundpay.entity.FundPayFamilyEntity;
import com.mcxx.modules.miniSalvation.fundpay.entity.FundPayMemberEntity;
import com.mcxx.modules.miniSalvation.fundpay.param.CustomFundPayMemberParam;
import com.mcxx.modules.miniSalvation.fundpay.param.FundPayFamilyParam;
import com.mcxx.modules.statistics.entity.MemberInfoEntity;
import com.yinhai.ta404.module.mybatis.mapper.Ta404SupportMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface FundPayFamilyReadDao extends Ta404SupportMapper {


	List<FundPayFamilyDTO> getDTOByFundPayId(String fundPayId);


	int cntFundNumberZero(String fundPayId);


	List<FundPayFamilyDTO> getFundPayFamilyList(FundPayFamilyParam fundPayFamilyParam);



	List<FundPayFamilyExcelDTO> getFundPayFamilyExcelList(FundPayFamilyParam fundPayFamilyParam);




	List<FundPayFamilyEntity> getFamilyByCreateCapital(CapitalFundPayDTO capitalFundPayDTO);


	List<FundPayFamilyDTO> getNoSaveCapitalFamilyList(CapitalFundPayDTO capitalFundPayDTO);


	int getIdcardNoCompleteNotice(String fundPayId);


	List<String> cntFamilyByCapitalAndAllowance(FundPayDTO fundPayDTO);


	List<String> cntFamilyByCapitalAndAllowanceList(FundPayDTO fundPayDTO);


	List<FundPayFamilyEntity> getSaveCapitalFamilyByOrderId(@Param("orderIdList") List<String> orderIdList, @Param("costType") String costType, @Param("businessType") String businessType);








	List<String> cntFamilyByStand(StandFundPayDTO standFundPayDTO);


	List<FundPayFamilyDTO> getNoSaveStandFamilyList(StandFundPayDTO standFundPayDTO);


	List<FundPayFamilyEntity> getFamilyByCreateStand(StandFundPayDTO standFundPayDTO);


	List<FundPayFamilyEntity> getSaveStandFamilyByOrderId(@Param("orderIdList") List<String> orderIdList, @Param("costType")String costType,  @Param("businessType")String businessType);







	List<FundPayFamilyEntity> getFamilyByCreateAllowance(AllowanceFundPayDTO allowanceFundPayDTO);


	List<FundPayFamilyEntity> getFamilyByAddAllowanceMember(@Param("fundPayId") String fundPayId,
															@Param("orderIdList") List<String> orderIdList,
															@Param("familyIdList") List<String> familyIdList,
															@Param("businessType") String businessType);







	List<FundPayFamilyDTO> getNoSaveCustomFamilyList(CustomFundPayDTO customFundPayDTO);


	List<FundPayFamilyEntity> getSaveCustomFamilyByOrderId(@Param("orderIdList")List<String> orderIdList, @Param("businessType")String businessType);


	List<FundPayFamilyEntity> getFamilyByAddCustomMember(@Param("fundPayId") String fundPayId,
														 @Param("orderIdList") List<String> orderIdList,
														 @Param("familyIdList") List<String> familyIdList,
														 @Param("businessType")String businessType);






	List<String> getFamilyId(String fundPayId);



	FundPayEntity getCustomRollById(String customFundPayId);

	List<FundPayMemberEntity> getCustomMemberListByIdcard(@Param("param") CustomFundPayMemberParam param, @Param("idcardList") List<String> idcardList);

    List<String> selectDoingOrderBySourceIds(@Param("ids") List<String> ids);

    List<FundPayFamilyEntity> getNurseFamilyByCreateCapital(CapitalFundPayDTO capitalFundPayDTO);

    List<String> getHistoryNoDeadMember(@Param("idCards") List<String> idCards);

	List<String> getHistoryNoDeadFamily(@Param("idCards") List<String> idCards);

    List<String> getOrderIdsByFundPayId( String fundPayId);

	List<FundPayFamilyEntity> cntCareOrderByCapital(FundPayDTO fundPayDTO);


	List<FundPayMemberEntity> getCustomMemberListByIdCardAndCarePerson(@Param("param") FundPayEntity param, @Param("idCardList") List<String> idCardList);

    List<FundPayMemberDTO> getFocusCapitalObjectList(FundPayFamilyParam fundPayFamilyParam);

	List<FundPayFamilyEntity> getFocusNurseFamilyByCreateCapital(CapitalFundPayDTO capitalFundPayDTO);

    List<BankEntity> getBankInfoForFamily(@Param("businessType") String businessType, @Param("areaCode") String areaCode,@Param("familyIds") List<String> familyIds,@Param("memberIds") List<String> memberIds);

	List<FundPayMemberEntity> getHistoryDeadAndStopInfo(@Param("orderIds") List<String> orderIds);

	List<FundPayMemberEntity> getCustomMemberListByIdCardForFocus(@Param("param") CustomFundPayMemberParam param, @Param("idCardList") List<String> idCardList);


	List<FundPayFamilyEntity> getFamilyForDisperseStandRoll(StandFundPayDTO standFundPayDTO);


	List<FundPayFamilyEntity> getFamilyForFocusStandRoll(StandFundPayDTO standFundPayDTO);

    List<FundPayFamilyDTO> getNoSaveStandDisperseFamilyList(StandFundPayDTO standFundPayDTO);

	List<MemberInfoEntity> selectDeadMemberInfo(@Param("idCards") List<String> idCards);
}
